﻿package taurus.client;

import com.taurus.core.entity.ITObject;
import com.taurus.core.util.ICallback;

import taurus.client.TaurusClient.ConnectionProtocol;

/**
 * 网络协议处理通用接口
 * @author daixiwei	daixiwei15@126.com
 *
 */
public interface ISocketLayer {
	/**
	 * 连接服务器
	 */
	public void connect();

	/**
	 * 连接服务器并且验证
	 * @param validate
	 */
    public void connect(ITObject validate);
    
	/**
	 *  断开连接
	 */
	public void disconnect();
	
	/**
	 * 处理事件
	 */
	public void processEvent();

	/**
	 * 发送消息
	 * @param msg
	 */
	public void write(Message msg);
	
	/**
	 * get Protocol type
	 * @return
	 */
	public ConnectionProtocol getProtocol();
	
	/**
	 * 设置连接状态回调
	 */
	public void setOnConnect(ICallback<SocketCode> onConnect);


	/**
	 * 设置事件消息回调E
	 */
	public void setOnEvent(ICallback<Message> onEvent);

	/**
	 * 网络延时
	 */
	public int getAveragePingTime();

	/**
	 * 获取服务器Session字符
	 */
	public String getSession();

	/**
	 * 设置服务器Session字符
	 * @param session
	 */
	public void setSession(String session);
}
